package com.ruoyi.system.service;

import java.util.List;
import java.util.Set;

import com.ruoyi.common.core.domain.entity.SysAeration;
import com.ruoyi.system.domain.SysUserAeration;

/**
 * 增氧机业务层
 *
 * @author ruoyi
 */
public interface ISysAerationService {
    /**
     * 根据条件分页查询增氧机数据
     *
     * @param sysAeration 增氧机信息
     * @return 增氧机数据集合信息
     */
    public List<SysAeration> selectSysAerationList(SysAeration sysAeration);

    /**
     * 根据用户ID查询增氧机列表
     *
     * @param userId 用户ID
     * @return 增氧机列表
     */
    public List<SysAeration> selectSysAerationsByUserId(Long userId);

    /**
     * 根据用户ID查询增氧机权限
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    public Set<String> selectSysAerationPermissionByUserId(Long userId);

    /**
     * 查询所有增氧机
     *
     * @return 增氧机列表
     */
    public List<SysAeration> selectAerationAll();

    /**
     * 根据用户ID获取增氧机选择框列表
     *
     * @param userId 用户ID
     * @return 选中增氧机ID列表
     */
    public List<Long> selectAerationListByUserId(Long userId);

    /**
     * 通过增氧机ID查询增氧机
     *
     * @param roleId 增氧机ID
     * @return 增氧机对象信息
     */
    public SysAeration selectAerationById(Long roleId);

    /**
     * 校验增氧机名称是否唯一
     *
     * @param sysAeration 增氧机信息
     * @return 结果
     */
    public String checkAerationNameUnique(SysAeration sysAeration);

    /**
     * 校验增氧机权限是否唯一
     *
     * @param sysAeration 增氧机信息
     * @return 结果
     */
    public String checkAerationKeyUnique(SysAeration sysAeration);

    /**
     * 校验增氧机是否允许操作
     *
     * @param sysAeration 增氧机信息
     */
    public void checkAerationAllowed(SysAeration sysAeration);

    /**
     * 校验增氧机是否有数据权限
     *
     * @param aerId 增氧机id
     */
    public void checkAerationDataScope(Long aerId);

    /**
     * 通过增氧机ID查询增氧机使用数量
     *
     * @param aerId 增氧机ID
     * @return 结果
     */
    public int countUserAerationByAerId(Long aerId);

    /**
     * 新增保存增氧机信息
     *
     * @param sysAeration 增氧机信息
     * @return 结果
     */
    public int insertAeration(SysAeration sysAeration);

    /**
     * 修改保存增氧机信息
     *
     * @param sysAeration 增氧机信息
     * @return 结果
     */
    public int updateAeration(SysAeration sysAeration);

    /**
     * 修改增氧机状态
     *
     * @param sysAeration 增氧机信息
     * @return 结果
     */
    public int updateAerationStatus(SysAeration sysAeration);

    /**
     * 修改数据权限信息
     *
     * @param sysAeration 增氧机信息
     * @return 结果
     */
    public int authDataScope(SysAeration sysAeration);

    /**
     * 通过增氧机ID删除增氧机
     *
     * @param aerId 增氧机ID
     * @return 结果
     */
    public int deleteAerationById(Long aerId);

    /**
     * 批量删除增氧机信息
     *
     * @param aerIds 需要删除的增氧机ID
     * @return 结果
     */
    public int deleteAerationByIds(Long[] aerIds);

    /**
     * 取消授权用户增氧机
     *
     * @param userAeration 渔场和增氧机关联信息
     * @return 结果
     */
    public int deleteUserAeration(SysUserAeration userAeration);

    /**
     * 批量取消授权用户增氧机
     *
     * @param aerId   增氧机ID
     * @param userIds 需要取消授权的用户数据ID
     * @return 结果
     */
    public int deleteDeptAerations(Long aerId, Long[] userIds);

    /**
     * 批量选择授权用户增氧机
     *
     * @param aerId   增氧机ID
     * @param userIds 需要删除的用户数据ID
     * @return 结果
     */
    public int insertDeptAerations(Long aerId, Long[] userIds);
}
